AWS再入門 AWS Config編
はじめに
当エントリはDevelopers.IOで弊社AWSチームによる『AWS サービス別 再入門アドベントカレンダー 2015』の9日目のエントリです。昨日8日目のエントリは能登の『Amazon EMR』でした。
このアドベントカレンダーの企画は、普段AWSサービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。
本日9日目のテーマは『AWS Config』です。
AWS Config (AWS リソース構成の追跡) | アマゾン ウェブ サービス(AWS 日本語)
目次
サービスの基本的な説明
AWS Configとは、セキュリティとガバナンスを可能にする構成変更の通知、構成履歴、AWSリソースのインベントリーをお客様へ提供する完全マネージド型のサービスです。
簡単にAWSリソースの構成や変更を可視化することが出来ます。
構成管理・変更管理ツール
構成情報のスナップショットの取得
サポートされているAWSリソースについて、現在の構成情報のスナップショットを自動で取得してくれます。 取得された情報はS3バケットに保存されます。
現在(15/12/9)サポートされているAWSリソースは以下です。
AWSサービス | AWSリソース | リソースタイプの値 |
---|---|---|
Amazon Elastic Block Store | Amazon EBS volume | AWS::EC2::Volume |
Amazon Elastic Compute Cloud | EC2 Dedicated host1 | AWS::EC2::Host |
EC2 Elastic IP (VPC only) | AWS::EC2::EIP |
|
EC2 instance | AWS::EC2::Instance |
|
EC2 network interface | AWS::EC2::NetworkInterface |
|
EC2 security group | AWS::EC2::SecurityGroup |
|
Amazon Virtual Private Cloud | Customer gateway | AWS::EC2::CustomerGateway |
Internet gateway | AWS::EC2::InternetGateway |
|
Network access control list (ACL) | AWS::EC2::NetworkAcl |
|
Route table | AWS::EC2::RouteTable |
|
Subnet | AWS::EC2::Subnet |
|
Virtual private cloud (VPC) | AWS::EC2::VPC |
|
VPN connection | AWS::EC2::VPNConnection |
|
VPN gateway | AWS::EC2::VPNGateway |
|
AWS CloudTrail | Trail | AWS::CloudTrail::Trail |
この中で設定を記録したいものだけを選択することも可能です。
AWSリソースの構成情報の検索、閲覧
AWSリソースの構成情報を検索し、閲覧することが出来ます。
AWSリソースにどのような設定がされているのかを可視化出来ます。
AWSリソースの変更履歴の検索、閲覧
AWSリソースの構成が変更を履歴として検索、閲覧することが出来ます。 いつ、どの値が、どのように変更されたかが分かります。
AWSリソースが作成、変更、削除された際の通知
変更がなされたタイミングでSNS経由で通知を行うことが出来ます。 SNSなので、メール送信することも可能ですし、SQSに投げて処理を行うことも可能です。
AWSリソース間の関係性の確認
各AWSリソースがどのような関係性にあるのかを確認することが出来ます。 例えば、
- セキュリティグループを割り当てているインスタンス
- インスタンスに紐付けられているEBSボリューム
- VPC内に構築されているインスタンス
などです。
AWS Configの構成要素
Configuration Items
とある時点の各設定値のこと。
メタデータ、属性値、関係性などAWS Configの最小構成要素。
Configuration Snapshot
Configuration Itemsの集合。
定期的、もしくは変更のタイミングで取得されてS3に保管される。
Configuration Stream
Configuration Itemsのリスト。
リソースが作成、変更、削除される際にConfiguration Itemsが作成され、それをConfiguration Streamに追加する。
追加されたConfiguration ItemsはSNSでの通知に使用される。
Configuration History
任意の期間のConfiguration Itemsの集合で、設定の履歴。
Configuration HistoryはS3に保管される。
Config Rules
2015/12/9現在、AWS Config Rulesはプレビューです。
本記事の内容は正式リリース時に変更される可能性があります。
AWS Configで取得した設定値を監査して、あるルールに則っているかを自動で確認してくれるサービスです。
マネージドルールとカスタムルール
ルールには大きく分けて2つあります。
AWSが提供しているマネージドルールと、自分で作成することの出来るカスタムルールです。
マネージドルールはよく必要とされるルールをAWSが事前に用意したものです。
パラメータを設定することでマネージドルールも多少カスタムすることが可能です。
現在(2015/12/9)用意されているマネージドルールは以下です。
名前 | 説明 | 検査時期 | パラメータ |
---|---|---|---|
CLOUD_TRAIL_ENABLED | CloudTrailは有効化する | 定期 | s3BucketName snsTopicArn cloudWatchLogsLogGroupArn |
EIP_ATTACHED | EIPはインスタンスにアタッチする | 変更時 | |
ENCRYPTED_VOLUMES | EBSは暗号化する | 変更時 | kmsId |
INCOMING_SSH_DISABLED | SSHポートが開放されたSGを作らない | 変更時 | |
INSTANCES_IN_VPC | EC2はVPC内に作成する | 変更時 | vpcId |
REQUIRED_TAGS | ○○というタグを付ける | 変更時 | tag1key tag1value |
RESTRICTED_INCOMING_TRAFFIC | ○○番ポートが開放されたSGを作らない | 変更時 | blockedPort1 blockedPort2 |
カスタムルールは自分でルールを作成することが可能です。
ルールの作成にはLambdaファンクションを使用しますので、非常に柔軟なルールを作成することが可能です。
例えば、オープンなSSHポートが設定された場合、予め指定したIPアドレスのみに自動的に制限するなど、検知して、対応するまでを自動化することが可能となるわけです。
変更時検査と定期検査
ルールによる検査の時期は2タイプあります。
AWSリソースが作成・変更された際に検査を実行する変更時検査と、設定のスナップショットがS3に保管されるタイミングで検査する定期変更です。
変更時検査ではスコープを設定することができ、特定のAWSリソースタイプ、特定のAWSリソースID、特定のタグがついたAWSリソースだけを検査の対象とすることが出来ます。
基本的にAWSリソースの検査についてはこちらを使えば宜しいかと思います。
定期検査では、スコープを設定することは出来ず、スナップショット全体の検査となります。
こちらはアカウント全体でどうか、という検査をするときに使用します。
例えば、アカウント全体でのEC2インスタンスの数が一定数を超えていないか等です。
サービス利用のユースケース
AWSリソース構成管理
自分の所有するAWSアカウント上にどんなAWSリソースが存在していて、どんな設定がなされているのかを確認し、無駄なリソースや、設定値の間違いを発見することが出来ます。
構成が変更された時に通知を送ることもできるので、すぐに検知することが出来ます。
監査、コンプライアンス
構成の変更が全て記録されるので、いつ、どのように変更がなされたかがひと目で分かります。
社内ポリシーとして証跡を取得しないといけない場合にはもってこいのサービスです。
※ CloudTrailでも出来るじゃんと思われるかと思いますが、あちらは呼び出されたAPIを全て記録していますので、量がハンパないです。
AWS Configでひとまず確認し、詳細はCloudTrailという併用がベストかと思います。
CloudTrailとConfigはどちらか、ではなくどちらもなのです。
変更管理、トラブルシューティング
AWSリソースの中には関連性を持ったものが多いです。
例えば、セキュリティグループの設定を変更したら、インスタンスにアクセスできなくなったとします。
セキュリティグループを変更した本人であれば原因がすぐ分かるかと思いますが、その他の人は突然アクセスできなくなった!と焦ります。
この時、AWS Configでインスタンスの情報を確認し、関連するセキュリティグループを追えば、おかしな変更がされたことがすぐに分かります。
更に、元の設定値が分かるので、それを戻せばひとまずは状況が回復しますので、トラブルシューティングとしても役立ちます。
あわせて読みたい
- AWS Black Belt Tech シリーズ 2015 AWS CloudTrail & AWS Config
やはりBlackbeltの情報は役立ちます。本記事でも沢山引用しています。 - AWS ConfigをAWS CLIから紐解く
- AWS Configの拡張機能「AWS Config Rules」の要素を確認してみた #reinvent
- AWS Config Rulesのマネージドルールを試してみた。 #reinvent
- AWS Config Rulesのカスタムルール(Lambda連携)を触ってみた #reinvent
案の定、AWS Configの記事を書いているのはほぼ私でした。
今回の記事は上記の記事を統合したものです。ありがとう過去の私。
さいごに
以上、AWS サービス別 再入門アドベントカレンダー 9日目のエントリ『AWS Config』編でした。地味ではありますが非常に重要なサービスになっていますので、是非ご活用下さい。
明日(12/10)は西澤のEC2編です。お楽しみに!